package com.dq.domain.base;

import com.dq.utils.TimeUtil;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.UUID;

public abstract class AbstractEntity implements Serializable {

    /**
     * 日期(YYYYMMDDHHMMSS) + 随机数(位数)
     * @param size 追加随机数 位数
     */
    public static String generyDatetimeAndRandomNum(int size) {
        return TimeUtil.longToString(System.currentTimeMillis(), TimeUtil.YYYYMMDDHHMMSS) + RandomStringUtils.randomNumeric(size);
    }
    /**
     * 字符串 + 日期(YYYYMMDDHHMMSS) + 随机数(位数)
     * @param name 字符串
     * @param name 追加随机数 位数
     */
    public static String generyStrAndDatetimeAndRandomNum(String name, int size) {
        return name + TimeUtil.longToString(System.currentTimeMillis(), TimeUtil.YYYYMMDDHHMMSS)
                + RandomStringUtils.randomNumeric(size);
    }
    /**
     *  字符串 + 时间戳(毫秒)
     * @param name 字符串
     */
    public static String generyStrAndMstime(String name){
        return name + System.currentTimeMillis();
    }


    protected BigDecimal fmt(BigDecimal n) {
        return null != n ? n.setScale(2, RoundingMode.HALF_UP) : BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
    }

    protected String fmt(String n) {
        return StringUtils.isNotBlank(n) ? n : "";
    }

    protected Long fmt(Long n) {
        return null != n ? n : 0L;
    }

    protected String fmt(Long n, String type) {
        return n == null ? "" : TimeUtil.longToString(n, type);
    }

    protected boolean fmt(Boolean n) {
        return n == null ? false : n;
    }
}